//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

function write(v) { WScript.Echo(v + ""); }

function foo() {}

write(new String('he' + 'llo') % new Object());
write(new String('he' + 'llo') % new Object());
write(new String('he' + 'llo') % [1, 2, 3]);
write(new String('he' + 'llo') % [1 ,2 , 3]);
write(new String('he' + 'llo') % new Array(3));
write(new String('he' + 'llo') % Array(3));
write(new String('he' + 'llo') % new Array(1 ,2 ,3));
write(new String('he' + 'llo') % Array(1));
write(new String('he' + 'llo') % foo);
write(new Object() % undefined);
write(new Object() % null);
write(new Object() % true);
write(new Object() % false);
write(new Object() % Boolean(true));
write(new Object() % Boolean(false));
write(new Object() % new Boolean(true));
write(new Object() % new Boolean(false));
write(new Object() % NaN);
write(new Object() % +0);
write(new Object() % -0);
write(new Object() % 0);
write(new Object() % 0.0);
write(new Object() % -0.0);
write(new Object() % +0.0);
write(new Object() % 1);
write(new Object() % 10);
write(new Object() % 10.0);
write(new Object() % 10.1);
write(new Object() % -1);
write(new Object() % -10);
write(new Object() % -10.0);
write(new Object() % -10.1);
write(new Object() % Number.MAX_VALUE);
write(new Object() % Number.MIN_VALUE);
write(new Object() % Number.NaN);
write(new Object() % Number.POSITIVE_INFINITY);
write(new Object() % Number.NEGATIVE_INFINITY);
write(new Object() % new Number(NaN));
write(new Object() % new Number(+0));
write(new Object() % new Number(-0));
write(new Object() % new Number(0));
write(new Object() % new Number(0.0));
write(new Object() % new Number(-0.0));
write(new Object() % new Number(+0.0));
write(new Object() % new Number(1));
write(new Object() % new Number(10));
write(new Object() % new Number(10.0));
write(new Object() % new Number(10.1));
write(new Object() % new Number(-1));
write(new Object() % new Number(-10));
write(new Object() % new Number(-10.0));
write(new Object() % new Number(-10.1));
write(new Object() % new Number(Number.MAX_VALUE));
write(new Object() % new Number(Number.MIN_VALUE));
write(new Object() % new Number(Number.NaN));
write(new Object() % new Number(Number.POSITIVE_INFINITY));
write(new Object() % new Number(Number.NEGATIVE_INFINITY));
write(new Object() % '');
write(new Object() % 0xa);
write(new Object() % 04);
write(new Object() % 'hello');
write(new Object() % 'hel' + 'lo');
write(new Object() % String(''));
write(new Object() % String('hello'));
write(new Object() % String('h' + 'ello'));
write(new Object() % new String(''));
write(new Object() % new String('hello'));
write(new Object() % new String('he' + 'llo'));
write(new Object() % new Object());
write(new Object() % new Object());
write(new Object() % [1, 2, 3]);
write(new Object() % [1 ,2 , 3]);
write(new Object() % new Array(3));
write(new Object() % Array(3));
write(new Object() % new Array(1 ,2 ,3));
write(new Object() % Array(1));
write(new Object() % foo);
write(new Object() % undefined);
write(new Object() % null);
write(new Object() % true);
write(new Object() % false);
write(new Object() % Boolean(true));
write(new Object() % Boolean(false));
write(new Object() % new Boolean(true));
write(new Object() % new Boolean(false));
write(new Object() % NaN);
write(new Object() % +0);
write(new Object() % -0);
write(new Object() % 0);
write(new Object() % 0.0);
write(new Object() % -0.0);
write(new Object() % +0.0);
write(new Object() % 1);
write(new Object() % 10);
write(new Object() % 10.0);
write(new Object() % 10.1);
write(new Object() % -1);
write(new Object() % -10);
write(new Object() % -10.0);
write(new Object() % -10.1);
write(new Object() % Number.MAX_VALUE);
write(new Object() % Number.MIN_VALUE);
write(new Object() % Number.NaN);
write(new Object() % Number.POSITIVE_INFINITY);
write(new Object() % Number.NEGATIVE_INFINITY);
write(new Object() % new Number(NaN));
write(new Object() % new Number(+0));
write(new Object() % new Number(-0));
write(new Object() % new Number(0));
write(new Object() % new Number(0.0));
write(new Object() % new Number(-0.0));
write(new Object() % new Number(+0.0));
write(new Object() % new Number(1));
write(new Object() % new Number(10));
write(new Object() % new Number(10.0));
write(new Object() % new Number(10.1));
write(new Object() % new Number(-1));
write(new Object() % new Number(-10));
write(new Object() % new Number(-10.0));
write(new Object() % new Number(-10.1));
write(new Object() % new Number(Number.MAX_VALUE));
write(new Object() % new Number(Number.MIN_VALUE));
write(new Object() % new Number(Number.NaN));
write(new Object() % new Number(Number.POSITIVE_INFINITY));
write(new Object() % new Number(Number.NEGATIVE_INFINITY));
write(new Object() % '');
write(new Object() % 0xa);
write(new Object() % 04);
write(new Object() % 'hello');
write(new Object() % 'hel' + 'lo');
write(new Object() % String(''));
write(new Object() % String('hello'));
write(new Object() % String('h' + 'ello'));
write(new Object() % new String(''));
write(new Object() % new String('hello'));
write(new Object() % new String('he' + 'llo'));
write(new Object() % new Object());
write(new Object() % new Object());
write(new Object() % [1, 2, 3]);
write(new Object() % [1 ,2 , 3]);
write(new Object() % new Array(3));
write(new Object() % Array(3));
write(new Object() % new Array(1 ,2 ,3));
write(new Object() % Array(1));
write(new Object() % foo);
write([1, 2, 3] % undefined);
write([1, 2, 3] % null);
write([1, 2, 3] % true);
write([1, 2, 3] % false);
write([1, 2, 3] % Boolean(true));
write([1, 2, 3] % Boolean(false));
write([1, 2, 3] % new Boolean(true));
write([1, 2, 3] % new Boolean(false));
write([1, 2, 3] % NaN);
write([1, 2, 3] % +0);
write([1, 2, 3] % -0);
write([1, 2, 3] % 0);
write([1, 2, 3] % 0.0);
write([1, 2, 3] % -0.0);
write([1, 2, 3] % +0.0);
write([1, 2, 3] % 1);
write([1, 2, 3] % 10);
write([1, 2, 3] % 10.0);
write([1, 2, 3] % 10.1);
write([1, 2, 3] % -1);
write([1, 2, 3] % -10);
write([1, 2, 3] % -10.0);
write([1, 2, 3] % -10.1);
write([1, 2, 3] % Number.MAX_VALUE);
write([1, 2, 3] % Number.MIN_VALUE);
write([1, 2, 3] % Number.NaN);
write([1, 2, 3] % Number.POSITIVE_INFINITY);
write([1, 2, 3] % Number.NEGATIVE_INFINITY);
write([1, 2, 3] % new Number(NaN));
write([1, 2, 3] % new Number(+0));
write([1, 2, 3] % new Number(-0));
write([1, 2, 3] % new Number(0));
write([1, 2, 3] % new Number(0.0));
write([1, 2, 3] % new Number(-0.0));
write([1, 2, 3] % new Number(+0.0));
write([1, 2, 3] % new Number(1));
write([1, 2, 3] % new Number(10));
write([1, 2, 3] % new Number(10.0));
write([1, 2, 3] % new Number(10.1));
write([1, 2, 3] % new Number(-1));
write([1, 2, 3] % new Number(-10));
write([1, 2, 3] % new Number(-10.0));
write([1, 2, 3] % new Number(-10.1));
write([1, 2, 3] % new Number(Number.MAX_VALUE));
write([1, 2, 3] % new Number(Number.MIN_VALUE));
write([1, 2, 3] % new Number(Number.NaN));
write([1, 2, 3] % new Number(Number.POSITIVE_INFINITY));
write([1, 2, 3] % new Number(Number.NEGATIVE_INFINITY));
write([1, 2, 3] % '');
write([1, 2, 3] % 0xa);
write([1, 2, 3] % 04);
write([1, 2, 3] % 'hello');
write([1, 2, 3] % 'hel' + 'lo');
write([1, 2, 3] % String(''));
write([1, 2, 3] % String('hello'));
write([1, 2, 3] % String('h' + 'ello'));
write([1, 2, 3] % new String(''));
write([1, 2, 3] % new String('hello'));
write([1, 2, 3] % new String('he' + 'llo'));
write([1, 2, 3] % new Object());
write([1, 2, 3] % new Object());
write([1, 2, 3] % [1, 2, 3]);
write([1, 2, 3] % [1 ,2 , 3]);
write([1, 2, 3] % new Array(3));
write([1, 2, 3] % Array(3));
write([1, 2, 3] % new Array(1 ,2 ,3));
write([1, 2, 3] % Array(1));
write([1, 2, 3] % foo);
write([1 ,2 , 3] % undefined);
write([1 ,2 , 3] % null);
write([1 ,2 , 3] % true);
write([1 ,2 , 3] % false);
write([1 ,2 , 3] % Boolean(true));
write([1 ,2 , 3] % Boolean(false));
write([1 ,2 , 3] % new Boolean(true));
write([1 ,2 , 3] % new Boolean(false));
write([1 ,2 , 3] % NaN);
write([1 ,2 , 3] % +0);
write([1 ,2 , 3] % -0);
write([1 ,2 , 3] % 0);
write([1 ,2 , 3] % 0.0);
write([1 ,2 , 3] % -0.0);
write([1 ,2 , 3] % +0.0);
write([1 ,2 , 3] % 1);
write([1 ,2 , 3] % 10);
write([1 ,2 , 3] % 10.0);
write([1 ,2 , 3] % 10.1);
write([1 ,2 , 3] % -1);
write([1 ,2 , 3] % -10);
write([1 ,2 , 3] % -10.0);
write([1 ,2 , 3] % -10.1);
write([1 ,2 , 3] % Number.MAX_VALUE);
write([1 ,2 , 3] % Number.MIN_VALUE);
write([1 ,2 , 3] % Number.NaN);
write([1 ,2 , 3] % Number.POSITIVE_INFINITY);
write([1 ,2 , 3] % Number.NEGATIVE_INFINITY);
write([1 ,2 , 3] % new Number(NaN));
write([1 ,2 , 3] % new Number(+0));
write([1 ,2 , 3] % new Number(-0));
write([1 ,2 , 3] % new Number(0));
write([1 ,2 , 3] % new Number(0.0));
write([1 ,2 , 3] % new Number(-0.0));
write([1 ,2 , 3] % new Number(+0.0));
write([1 ,2 , 3] % new Number(1));
write([1 ,2 , 3] % new Number(10));
write([1 ,2 , 3] % new Number(10.0));
write([1 ,2 , 3] % new Number(10.1));
write([1 ,2 , 3] % new Number(-1));
write([1 ,2 , 3] % new Number(-10));
write([1 ,2 , 3] % new Number(-10.0));
write([1 ,2 , 3] % new Number(-10.1));
write([1 ,2 , 3] % new Number(Number.MAX_VALUE));
write([1 ,2 , 3] % new Number(Number.MIN_VALUE));
write([1 ,2 , 3] % new Number(Number.NaN));
write([1 ,2 , 3] % new Number(Number.POSITIVE_INFINITY));
write([1 ,2 , 3] % new Number(Number.NEGATIVE_INFINITY));
write([1 ,2 , 3] % '');
write([1 ,2 , 3] % 0xa);
write([1 ,2 , 3] % 04);
write([1 ,2 , 3] % 'hello');
write([1 ,2 , 3] % 'hel' + 'lo');
write([1 ,2 , 3] % String(''));
write([1 ,2 , 3] % String('hello'));
write([1 ,2 , 3] % String('h' + 'ello'));
write([1 ,2 , 3] % new String(''));
write([1 ,2 , 3] % new String('hello'));
write([1 ,2 , 3] % new String('he' + 'llo'));
write([1 ,2 , 3] % new Object());
write([1 ,2 , 3] % new Object());
write([1 ,2 , 3] % [1, 2, 3]);
write([1 ,2 , 3] % [1 ,2 , 3]);
write([1 ,2 , 3] % new Array(3));
write([1 ,2 , 3] % Array(3));
write([1 ,2 , 3] % new Array(1 ,2 ,3));
write([1 ,2 , 3] % Array(1));
write([1 ,2 , 3] % foo);
write(new Array(3) % undefined);
write(new Array(3) % null);
write(new Array(3) % true);
write(new Array(3) % false);
write(new Array(3) % Boolean(true));
write(new Array(3) % Boolean(false));
write(new Array(3) % new Boolean(true));
write(new Array(3) % new Boolean(false));
write(new Array(3) % NaN);
write(new Array(3) % +0);
write(new Array(3) % -0);
write(new Array(3) % 0);
write(new Array(3) % 0.0);
write(new Array(3) % -0.0);
write(new Array(3) % +0.0);
write(new Array(3) % 1);
write(new Array(3) % 10);
write(new Array(3) % 10.0);
write(new Array(3) % 10.1);
write(new Array(3) % -1);
write(new Array(3) % -10);
write(new Array(3) % -10.0);
write(new Array(3) % -10.1);
write(new Array(3) % Number.MAX_VALUE);
write(new Array(3) % Number.MIN_VALUE);
write(new Array(3) % Number.NaN);
write(new Array(3) % Number.POSITIVE_INFINITY);
write(new Array(3) % Number.NEGATIVE_INFINITY);
write(new Array(3) % new Number(NaN));
write(new Array(3) % new Number(+0));
write(new Array(3) % new Number(-0));
write(new Array(3) % new Number(0));
write(new Array(3) % new Number(0.0));
write(new Array(3) % new Number(-0.0));
write(new Array(3) % new Number(+0.0));
write(new Array(3) % new Number(1));
write(new Array(3) % new Number(10));
write(new Array(3) % new Number(10.0));
write(new Array(3) % new Number(10.1));
write(new Array(3) % new Number(-1));
write(new Array(3) % new Number(-10));
write(new Array(3) % new Number(-10.0));
write(new Array(3) % new Number(-10.1));
write(new Array(3) % new Number(Number.MAX_VALUE));
write(new Array(3) % new Number(Number.MIN_VALUE));
write(new Array(3) % new Number(Number.NaN));
write(new Array(3) % new Number(Number.POSITIVE_INFINITY));
write(new Array(3) % new Number(Number.NEGATIVE_INFINITY));
write(new Array(3) % '');
write(new Array(3) % 0xa);
write(new Array(3) % 04);
write(new Array(3) % 'hello');
write(new Array(3) % 'hel' + 'lo');
write(new Array(3) % String(''));
write(new Array(3) % String('hello'));
write(new Array(3) % String('h' + 'ello'));
write(new Array(3) % new String(''));
write(new Array(3) % new String('hello'));
write(new Array(3) % new String('he' + 'llo'));
write(new Array(3) % new Object());
write(new Array(3) % new Object());
write(new Array(3) % [1, 2, 3]);
write(new Array(3) % [1 ,2 , 3]);
write(new Array(3) % new Array(3));
write(new Array(3) % Array(3));
write(new Array(3) % new Array(1 ,2 ,3));
write(new Array(3) % Array(1));
write(new Array(3) % foo);
write(Array(3) % undefined);
write(Array(3) % null);
write(Array(3) % true);
write(Array(3) % false);
write(Array(3) % Boolean(true));
write(Array(3) % Boolean(false));
write(Array(3) % new Boolean(true));
write(Array(3) % new Boolean(false));
write(Array(3) % NaN);
write(Array(3) % +0);
write(Array(3) % -0);
write(Array(3) % 0);
write(Array(3) % 0.0);
write(Array(3) % -0.0);
write(Array(3) % +0.0);
write(Array(3) % 1);
write(Array(3) % 10);
write(Array(3) % 10.0);
write(Array(3) % 10.1);
write(Array(3) % -1);
write(Array(3) % -10);
write(Array(3) % -10.0);
write(Array(3) % -10.1);
write(Array(3) % Number.MAX_VALUE);
write(Array(3) % Number.MIN_VALUE);
write(Array(3) % Number.NaN);
write(Array(3) % Number.POSITIVE_INFINITY);
write(Array(3) % Number.NEGATIVE_INFINITY);
write(Array(3) % new Number(NaN));
write(Array(3) % new Number(+0));
write(Array(3) % new Number(-0));
write(Array(3) % new Number(0));
write(Array(3) % new Number(0.0));
write(Array(3) % new Number(-0.0));
write(Array(3) % new Number(+0.0));
write(Array(3) % new Number(1));
write(Array(3) % new Number(10));
write(Array(3) % new Number(10.0));
write(Array(3) % new Number(10.1));
write(Array(3) % new Number(-1));
write(Array(3) % new Number(-10));
write(Array(3) % new Number(-10.0));
write(Array(3) % new Number(-10.1));
write(Array(3) % new Number(Number.MAX_VALUE));
write(Array(3) % new Number(Number.MIN_VALUE));
write(Array(3) % new Number(Number.NaN));
write(Array(3) % new Number(Number.POSITIVE_INFINITY));
write(Array(3) % new Number(Number.NEGATIVE_INFINITY));
write(Array(3) % '');
write(Array(3) % 0xa);
write(Array(3) % 04);
write(Array(3) % 'hello');
write(Array(3) % 'hel' + 'lo');
write(Array(3) % String(''));
write(Array(3) % String('hello'));
write(Array(3) % String('h' + 'ello'));
write(Array(3) % new String(''));
write(Array(3) % new String('hello'));
write(Array(3) % new String('he' + 'llo'));
write(Array(3) % new Object());
write(Array(3) % new Object());
write(Array(3) % [1, 2, 3]);
write(Array(3) % [1 ,2 , 3]);
write(Array(3) % new Array(3));
write(Array(3) % Array(3));
write(Array(3) % new Array(1 ,2 ,3));
write(Array(3) % Array(1));
write(Array(3) % foo);
write(new Array(1 ,2 ,3) % undefined);
write(new Array(1 ,2 ,3) % null);
write(new Array(1 ,2 ,3) % true);
write(new Array(1 ,2 ,3) % false);
write(new Array(1 ,2 ,3) % Boolean(true));
write(new Array(1 ,2 ,3) % Boolean(false));
write(new Array(1 ,2 ,3) % new Boolean(true));
write(new Array(1 ,2 ,3) % new Boolean(false));
write(new Array(1 ,2 ,3) % NaN);
write(new Array(1 ,2 ,3) % +0);
write(new Array(1 ,2 ,3) % -0);
write(new Array(1 ,2 ,3) % 0);
write(new Array(1 ,2 ,3) % 0.0);
write(new Array(1 ,2 ,3) % -0.0);
write(new Array(1 ,2 ,3) % +0.0);
write(new Array(1 ,2 ,3) % 1);
write(new Array(1 ,2 ,3) % 10);
write(new Array(1 ,2 ,3) % 10.0);
write(new Array(1 ,2 ,3) % 10.1);
write(new Array(1 ,2 ,3) % -1);
write(new Array(1 ,2 ,3) % -10);
write(new Array(1 ,2 ,3) % -10.0);
write(new Array(1 ,2 ,3) % -10.1);
write(new Array(1 ,2 ,3) % Number.MAX_VALUE);
write(new Array(1 ,2 ,3) % Number.MIN_VALUE);
write(new Array(1 ,2 ,3) % Number.NaN);
write(new Array(1 ,2 ,3) % Number.POSITIVE_INFINITY);
write(new Array(1 ,2 ,3) % Number.NEGATIVE_INFINITY);
write(new Array(1 ,2 ,3) % new Number(NaN));
write(new Array(1 ,2 ,3) % new Number(+0));
write(new Array(1 ,2 ,3) % new Number(-0));
write(new Array(1 ,2 ,3) % new Number(0));
write(new Array(1 ,2 ,3) % new Number(0.0));
write(new Array(1 ,2 ,3) % new Number(-0.0));
write(new Array(1 ,2 ,3) % new Number(+0.0));
write(new Array(1 ,2 ,3) % new Number(1));
write(new Array(1 ,2 ,3) % new Number(10));
write(new Array(1 ,2 ,3) % new Number(10.0));
write(new Array(1 ,2 ,3) % new Number(10.1));
write(new Array(1 ,2 ,3) % new Number(-1));
write(new Array(1 ,2 ,3) % new Number(-10));
write(new Array(1 ,2 ,3) % new Number(-10.0));
write(new Array(1 ,2 ,3) % new Number(-10.1));
write(new Array(1 ,2 ,3) % new Number(Number.MAX_VALUE));
write(new Array(1 ,2 ,3) % new Number(Number.MIN_VALUE));
write(new Array(1 ,2 ,3) % new Number(Number.NaN));
write(new Array(1 ,2 ,3) % new Number(Number.POSITIVE_INFINITY));
write(new Array(1 ,2 ,3) % new Number(Number.NEGATIVE_INFINITY));
write(new Array(1 ,2 ,3) % '');
write(new Array(1 ,2 ,3) % 0xa);
write(new Array(1 ,2 ,3) % 04);
write(new Array(1 ,2 ,3) % 'hello');
write(new Array(1 ,2 ,3) % 'hel' + 'lo');
write(new Array(1 ,2 ,3) % String(''));
write(new Array(1 ,2 ,3) % String('hello'));
write(new Array(1 ,2 ,3) % String('h' + 'ello'));
write(new Array(1 ,2 ,3) % new String(''));
write(new Array(1 ,2 ,3) % new String('hello'));
write(new Array(1 ,2 ,3) % new String('he' + 'llo'));
write(new Array(1 ,2 ,3) % new Object());
write(new Array(1 ,2 ,3) % new Object());
write(new Array(1 ,2 ,3) % [1, 2, 3]);
write(new Array(1 ,2 ,3) % [1 ,2 , 3]);
write(new Array(1 ,2 ,3) % new Array(3));
write(new Array(1 ,2 ,3) % Array(3));
write(new Array(1 ,2 ,3) % new Array(1 ,2 ,3));
write(new Array(1 ,2 ,3) % Array(1));
write(new Array(1 ,2 ,3) % foo);
write(Array(1) % undefined);
write(Array(1) % null);
write(Array(1) % true);
write(Array(1) % false);
write(Array(1) % Boolean(true));
write(Array(1) % Boolean(false));
write(Array(1) % new Boolean(true));
write(Array(1) % new Boolean(false));
write(Array(1) % NaN);
write(Array(1) % +0);
write(Array(1) % -0);
write(Array(1) % 0);
write(Array(1) % 0.0);
write(Array(1) % -0.0);
write(Array(1) % +0.0);
write(Array(1) % 1);
write(Array(1) % 10);
write(Array(1) % 10.0);
write(Array(1) % 10.1);
write(Array(1) % -1);
write(Array(1) % -10);
write(Array(1) % -10.0);
write(Array(1) % -10.1);
write(Array(1) % Number.MAX_VALUE);
write(Array(1) % Number.MIN_VALUE);
write(Array(1) % Number.NaN);
write(Array(1) % Number.POSITIVE_INFINITY);
write(Array(1) % Number.NEGATIVE_INFINITY);
write(Array(1) % new Number(NaN));
write(Array(1) % new Number(+0));
write(Array(1) % new Number(-0));
write(Array(1) % new Number(0));
write(Array(1) % new Number(0.0));
write(Array(1) % new Number(-0.0));
write(Array(1) % new Number(+0.0));
write(Array(1) % new Number(1));
write(Array(1) % new Number(10));
write(Array(1) % new Number(10.0));
write(Array(1) % new Number(10.1));
write(Array(1) % new Number(-1));
write(Array(1) % new Number(-10));
write(Array(1) % new Number(-10.0));
write(Array(1) % new Number(-10.1));
write(Array(1) % new Number(Number.MAX_VALUE));
write(Array(1) % new Number(Number.MIN_VALUE));
write(Array(1) % new Number(Number.NaN));
write(Array(1) % new Number(Number.POSITIVE_INFINITY));
write(Array(1) % new Number(Number.NEGATIVE_INFINITY));
write(Array(1) % '');
write(Array(1) % 0xa);
write(Array(1) % 04);
write(Array(1) % 'hello');
write(Array(1) % 'hel' + 'lo');
write(Array(1) % String(''));
write(Array(1) % String('hello'));
write(Array(1) % String('h' + 'ello'));
write(Array(1) % new String(''));
write(Array(1) % new String('hello'));
write(Array(1) % new String('he' + 'llo'));
write(Array(1) % new Object());
write(Array(1) % new Object());
write(Array(1) % [1, 2, 3]);
write(Array(1) % [1 ,2 , 3]);
write(Array(1) % new Array(3));
write(Array(1) % Array(3));
write(Array(1) % new Array(1 ,2 ,3));
write(Array(1) % Array(1));
write(Array(1) % foo);
write(foo % undefined);
write(foo % null);
write(foo % true);
write(foo % false);
write(foo % Boolean(true));
write(foo % Boolean(false));
write(foo % new Boolean(true));
write(foo % new Boolean(false));
write(foo % NaN);
write(foo % +0);
write(foo % -0);
write(foo % 0);
write(foo % 0.0);
write(foo % -0.0);
write(foo % +0.0);
write(foo % 1);
write(foo % 10);
write(foo % 10.0);
write(foo % 10.1);
write(foo % -1);
write(foo % -10);
write(foo % -10.0);
write(foo % -10.1);
write(foo % Number.MAX_VALUE);
write(foo % Number.MIN_VALUE);
write(foo % Number.NaN);
write(foo % Number.POSITIVE_INFINITY);
write(foo % Number.NEGATIVE_INFINITY);
write(foo % new Number(NaN));
write(foo % new Number(+0));
write(foo % new Number(-0));
write(foo % new Number(0));
write(foo % new Number(0.0));
write(foo % new Number(-0.0));
write(foo % new Number(+0.0));
write(foo % new Number(1));
write(foo % new Number(10));
write(foo % new Number(10.0));
write(foo % new Number(10.1));
write(foo % new Number(-1));
write(foo % new Number(-10));
write(foo % new Number(-10.0));
write(foo % new Number(-10.1));
write(foo % new Number(Number.MAX_VALUE));
write(foo % new Number(Number.MIN_VALUE));
write(foo % new Number(Number.NaN));
write(foo % new Number(Number.POSITIVE_INFINITY));
write(foo % new Number(Number.NEGATIVE_INFINITY));
write(foo % '');
write(foo % 0xa);
write(foo % 04);
write(foo % 'hello');
write(foo % 'hel' + 'lo');
write(foo % String(''));
write(foo % String('hello'));
write(foo % String('h' + 'ello'));
write(foo % new String(''));
write(foo % new String('hello'));
write(foo % new String('he' + 'llo'));
write(foo % new Object());
write(foo % new Object());
write(foo % [1, 2, 3]);
write(foo % [1 ,2 , 3]);
write(foo % new Array(3));
write(foo % Array(3));
write(foo % new Array(1 ,2 ,3));
write(foo % Array(1));
write(foo % foo);
